package com.nibian.nibian.activity;

import android.graphics.Color;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.nibian.nibian.R;
import com.nibian.nibian.adapter.MyPagerAdapter;
import com.nibian.nibian.bean.TextBean;
import com.nibian.nibian.pickview.CustomListener;
import com.nibian.nibian.pickview.TimePickerView;
import com.nibian.nibian.ui.LineChartView;
import com.nibianplus.base.BaseActivity;
import com.nibianplus.base.BaseObject;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

/**
 * @创建者 Administrator
 * @创建时间 ${DATA} 15:02
 * @描述 ${TODO}
 * @更新者 $Author$
 * @更新时间 $Date$
 * @更新描述 ${TODO}
 */
public class MessageActivity extends BaseActivity {

    @BindView(R.id.rl_year)
    RelativeLayout rl_year;
    @BindView(R.id.rl_mone)
    RelativeLayout rl_mone;
    @BindView(R.id.rl_more)
    RelativeLayout rl_more;
    @BindView(R.id.tv_year)
    TextView tv_year;
    @BindView(R.id.tv_mone)
    TextView tv_mone;
    @BindView(R.id.tv_more)
    TextView tv_more;
    @BindView(R.id.tv_yearss)
    TextView tv_yearss;                     //年
    @BindView(R.id.tv_day)
    TextView tv_day;                        //日
    @BindView(R.id.iv_back)
    ImageView iv_back;                      //imageview
    @BindView(R.id.view_pager)
    ViewPager view_pager;                   //Viewapger
    @BindView(R.id.iv_choosedata)
    ImageView iv_choosedata;                //日期选择


    private TimePickerView pvTime,pvCustomTime;

    private List<View> mListView = new ArrayList();                //保存4个界面

    private LineChartView  mLineChartView;
    private List<Integer> mItems;
    private int[]          shadeColors;

    /**
     * init - ui
     */
    @Override
    protected void initView() {
        setContentView(R.layout.message_activity);
        ButterKnife.bind(this);

        /**
         * 设置当前时间
         */
        setCurrentTime();

        /**
         * 最好等数据加载完毕再初始化并显示，以免数据量大的时候，还未加载完毕就显示，造成APP崩溃。
         */
        initTimePicker();
        initCustomTimePicker();

        /**
         * 选择第一个
         */
        initChoose();
        /**
         * 添加所有的viewpager
         */
        initFragments();
        /**
         * viewpager设置适配器  - and 折线图数据的设置显示
         */
        initData();
    }

    /**
     * 设置当前的但联动的时间
     */
    private void setCurrentTime() {
        Date currentTime = new Date();
        tv_yearss.setText(new SimpleDateFormat("yyyy").format(currentTime));
        tv_day.setText(new SimpleDateFormat("MM").format(currentTime));
    }

    private void initCustomTimePicker() {
        // 注意：自定义布局中，id为 optionspicker 或者 timepicker 的布局以及其子控件必须要有，否则会报空指针
        // 具体可参考demo 里面的两个自定义布局
        //因为系统Calendar的月份是从0-11的,所以如果是调用Calendar的set方法来设置时间,月份的范围也要是从0-11
        //控制时间范围(如果不设置范围，则使用默认时间1900-2100年，此段代码可注释)
        Calendar selectedDate = Calendar.getInstance();//系统当前时间
        Calendar startDate = Calendar.getInstance();
        startDate.set(2014,1,23);
        Calendar endDate = Calendar.getInstance();
        endDate.set(2027,2,28);
        //时间选择器 ，自定义布局
        pvCustomTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {
                //选中事件回调 - 不是在这里面去拿，  在下面的方法回调中去获取
            }
        })
                /*.setType(TimePickerView.Type.ALL)//default is all
                .setCancelText("Cancel")
                .setSubmitText("Sure")
                .setContentSize(18)
                .setTitleSize(20)
                .setTitleText("Title")
                .isCyclic(true)// default is false
                .setTitleColor(Color.BLACK)
               /*.setDividerColor(Color.WHITE)//设置分割线的颜色
                .setTextColorCenter(Color.LTGRAY)//设置选中项的颜色
                .setLineSpacingMultiplier(1.6f)//设置两横线之间的间隔倍数
                .setTitleBgColor(Color.DKGRAY)//标题背景颜色 Night mode
                .setBgColor(Color.BLACK)//滚轮背景颜色 Night mode
                .setSubmitColor(Color.WHITE)
                .setCancelColor(Color.WHITE)*/
               /*.gravity(Gravity.RIGHT)// default is center*/
                .setDate(selectedDate)
                .setRangDate(startDate,endDate)
                .setLayoutRes(R.layout.pickerview_custom_time, new CustomListener() {

                    @Override
                    public void customLayout(View v) {
                        final TextView tvSubmit = (TextView) v.findViewById(R.id.tv_finish);
                        ImageView ivCancel = (ImageView) v.findViewById(R.id.iv_cancel);
                        tvSubmit.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                pvCustomTime.returnData();
                            }
                        });
                        ivCancel.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                pvCustomTime.dismiss();
                            }
                        });
                    }
                })
                .setDividerColor(Color.BLACK)
                .build();
    }
    private void initTimePicker() {
        //控制时间范围(如果不设置范围，则使用默认时间1900-2100年，此段代码可注释)
        //因为系统Calendar的月份是从0-11的,所以如果是调用Calendar的set方法来设置时间,月份的范围也要是从0-11
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        startDate.set(2013,0,23);
        Calendar endDate = Calendar.getInstance();
        endDate.set(2019,11,28);
        //时间选择器
        pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                // 这里回调过来的v,就是show()方法里面所添加的 View 参数，如果show的时候没有添加参数，v则为null
                /*
                 private String getTime(Date date) {//可根据需要自行截取数据显示
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
                return format.format(date);
                * */
                tv_yearss.setText(new SimpleDateFormat("yyyy").format(date));
                tv_day.setText(new SimpleDateFormat("MM").format(date));
            }
        })
                .setType(TimePickerView.Type.YEAR_MONTH_DAY)
                .setLabel("", "", "", "", "", "") //设置空字符串以隐藏单位提示   hide label
                .setDividerColor(Color.DKGRAY)
                .setContentSize(20)
                .setDate(selectedDate)
                .setRangDate(startDate,endDate)
                .build();
    }

    /**
     * 初始化选择第一个
     */
    private void initChoose() {
        rl_year.setBackgroundResource(R.mipmap.segment_selected_1_bg);
        tv_year.setTextColor(Color.WHITE);
    }

    /**
     * 将页面添加到集合
     */
    private void initFragments() {
        mListView.clear();
        LayoutInflater layoutInflater = getLayoutInflater();
        View message_one = layoutInflater.inflate(R.layout.message_one, null);
        View message_two = layoutInflater.inflate(R.layout.message_two, null);
        View message_three = layoutInflater.inflate(R.layout.message_three, null);
        View message_four = layoutInflater.inflate(R.layout.message_four, null);
        mListView.add(message_one);                         //将页面添加到集合
        mListView.add(message_two);
        mListView.add(message_three);
        mListView.add(message_four);


        mLineChartView = (LineChartView) message_one.findViewById(R.id.lcv);
    }

    /**
     * viewpager设置适配器
     */
    private void initData() {
        view_pager.setAdapter(new MyPagerAdapter(mListView));

        setLinChartUiData();
    }

    /**
     * 设置折线图的放入数据
     */
    private void setLinChartUiData() {
        mItems = new ArrayList<>();                    //  初始化折线数据
        mItems.add(23);
        shadeColors = new int[]{Color.argb(100, 255, 86, 86), Color.argb(15, 255, 86, 86),Color.argb(0, 255, 86, 86)};
        mLineChartView.setItems(mItems);                //  设置折线数据
        mLineChartView.setShadeColors(shadeColors);     //  设置渐变颜色
        mLineChartView.startAnim(mLineChartView, 2000); //  开启动画
    }

    /**
     * 事件处理
     * @param v
     */
    @OnClick({R.id.rl_year,R.id.rl_mone,R.id.rl_more,R.id.iv_back,R.id.iv_choosedata})
    public void onClick(View v){
        switch (v.getId()){
            case R.id.rl_year:
                setBackgroundPhoto();
                setBackGroundText();
                rl_year.setBackgroundResource(R.mipmap.segment_selected_1_bg);
                tv_year.setTextColor(Color.WHITE);
                break;
            case R.id.rl_mone:
                setBackgroundPhoto();
                setBackGroundText();
                rl_mone.setBackgroundResource(R.mipmap.segment_selected_2_bg);
                tv_mone.setTextColor(Color.WHITE);
                break;
            case R.id.rl_more:
                setBackgroundPhoto();
                setBackGroundText();
                rl_more.setBackgroundResource(R.mipmap.segment_selected_3_bg);
                tv_more.setTextColor(Color.WHITE);
                break;
            case R.id.iv_back:
                finish();
                break;
            case R.id.iv_choosedata:                            //选择日期 -
                pvTime.show(v);//弹出时间选择器，传递参数过去，回调的时候则可以绑定此view
                break;
        }
    }

    /**
     * 设置背景图片
     */
    public void setBackgroundPhoto(){
        rl_year.setBackgroundResource(R.mipmap.segment_normal_1_bg);
        rl_mone.setBackgroundResource(R.mipmap.segment_normal_2_bg);
        rl_more.setBackgroundResource(R.mipmap.segment_normal_3_bg);
    }

    /**
     * 设置背景文字
     */
    public void setBackGroundText(){
        tv_year.setTextColor(Color.parseColor("#00a6dc"));
        tv_mone.setTextColor(Color.parseColor("#00a6dc"));
        tv_more.setTextColor(Color.parseColor("#00a6dc"));
    }

    /**
     * 获取实列
     * @return
     */
    @Override
    protected BaseObject createDataObject() {
        return TextBean.getInstance(getTagName());
    }

    /**
     * 设置UI
     * @param dataObject
     * @param tag
     */
    @Override
    public void refreshUI(BaseObject dataObject, int tag) {

    }
}
